home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / DEF / Convert / Metrics / make-zone < prev   
Lisp/Scheme  |  1998-10-23  |  1KB  |  32 lines

  1. make-zone length-pattern &optional type
  2.  
  3. This function makes a single zone value by adding together a list of note-lengths. If the list contains minus values (note-length rests) these are treated as absolute numbers so that the accurate zone length is obtained. The list-of-lenghts can contain both ticks and length symbols.
  4.  
  5. (setq len1 '(96 24 -48 24 -24))
  6. (make-zone len1)
  7. --> 216
  8.  
  9. make-zone is usually used in the following context to set up the zone length according to the material.
  10.  
  11. (def-zone
  12.    melody (* 2 (make-zone len1))
  13.    bass (* 4 (make-zone len2))
  14. )
  15.  
  16. The optional type ables you to return the result as ratios. If you are working with ratios remember that the returned integer values will be interpreted as ticks if you feed the values to the zones. Hence, use :ratio only when the results are needed for further calculations, not setting up zone lengths.
  17.  
  18. (setq len2 '(1/4 1/16 -1/8 1/16 -1/16 1/1))
  19. (make-zone len2)
  20. --> 3000
  21.  
  22. (make-zone len2 :ratio)
  23. --> 25/16
  24.  
  25. Note that make-zone works with zoned length lists.
  26.  
  27. (make-zone '((1/16 1/16) (1/32 1/24) (1/2 1/4)))
  28. --> (240 140 1440)
  29.  
  30. (make-zone '((1/16 1/16) (1/32 1/24) (1/2 1/4)) :ratio)
  31. --> (1/8 7/96 3/4)
  32.